package com.library.management.service;

import com.library.management.domain.Users;
import com.baomidou.mybatisplus.extension.service.IService;
import com.library.management.dto.LoginParam;
import com.library.management.dto.LoginResponseDTO;
import com.library.management.dto.UserInfoDTO;
import com.library.management.dto.UserPageDTO;
import com.library.management.dto.UserCreateDTO;
import com.library.management.dto.UserUpdateDTO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

/**
* @author HY
* @description 针对表【users(用户表)】的数据库操作Service
* @createDate 2025-04-04 17:38:12
*/
public interface UsersService extends IService<Users> {

    /**
     * 用户登录
     * @param loginParam 登录参数
     * @return 登录结果
     */
    LoginResponseDTO login(LoginParam loginParam);
    
    /**
     * 获取当前登录用户信息
     * @return 用户信息
     */
    UserInfoDTO getCurrentUserInfo();
    
    /**
     * 分页查询用户列表
     * @param pageDTO 分页参数
     * @return 用户分页数据
     */
    Page<UserInfoDTO> getUserPage(UserPageDTO pageDTO);
    
    /**
     * 创建用户
     * @param userCreateDTO 用户创建参数
     * @return 创建后的用户信息
     */
    UserInfoDTO createUser(UserCreateDTO userCreateDTO);
    
    /**
     * 更新用户信息
     * @param id 用户ID
     * @param userUpdateDTO 用户更新参数
     * @return 更新后的用户信息
     */
    UserInfoDTO updateUser(Integer id, UserUpdateDTO userUpdateDTO);
    
    /**
     * 删除用户
     * @param id 用户ID
     * @return 是否删除成功
     */
    boolean deleteUser(Integer id);
    
    /**
     * 根据用户名查询用户ID
     * @param username 用户名
     * @return 用户ID
     */
    Integer getUserIdByUsername(String username);
}
